package com.test.environment;

import com.test.source.MapPropertySource;
import com.test.source.MutablePropertySources;

/**
 * 标准环境类，继承自AbstractEnvironment，用于配置和管理应用程序的环境属性
 */
public class StandardEnvironment extends AbstractEnvironment {

    // 系统属性的属性源名称
    public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";
    // 系统环境变量的属性源名称
    public static final String SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME = "systemEnvironment";

    /**
     * 自定义属性源的方法
     *
     * @param propertySources 可以添加或修改的属性源集合
     * 该方法主要用于向属性源集合中添加系统环境变量和系统属性，确保这些属性可以在应用程序中被访问和使用
     */
    protected void customizePropertySources(MutablePropertySources propertySources) {
        // 添加系统环境变量作为属性源，使用MapPropertySource来封装环境变量
        propertySources.addLast(new MapPropertySource(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, getSystemEnvironment()));
        // 添加系统属性作为属性源，使用SystemEnvironmentPropertySource来封装系统属性
        propertySources.addLast(new SystemEnvironmentPropertySource(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, getSystemProperties()));
    }
}
